﻿using System;
using System.Data;
using System.Windows.Forms;

namespace Gestión_UTN.View.general
{
    public partial class TipoExamen : Form
    {
        private static Gestión_UTN.bl.tipoExamenbl createTipoExamen = Gestión_UTN.factories.blfactory.createTipoExamen();

        private static string tipo_anterior;
        private static DataTable tipos;

        public TipoExamen()
        {
            InitializeComponent();
        }

        private void TipoExamen_Load(object sender, EventArgs e)
        {
            tipos = createTipoExamen.FindAllTipoExamenes();

            if (null != tipos)
            {
                foreach (DataRow dr in tipos.Rows)
                {
                    this.dgvTipos.Rows.Add(dr["tie_tipo"]);
                }
            }
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.dgvTipos.CurrentCell.Value != null)
                {
                    string nombre = this.dgvTipos.CurrentCell.Value.ToString();

                    DataRow[] drs = tipos.Select("tie_tipo = '" + nombre + "'");

                    if (drs.Length == 0)
                    {
                        bool ingresado = createTipoExamen.SaveTipoExamen(nombre);

                        if (ingresado)
                        {
                            MessageBox.Show("Tipo Registrado!!", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information);

                            refreshDgv();
                        }
                        else
                        {
                            MessageBox.Show("Error al Registrar!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                    }
                    else
                    {
                        MessageBox.Show("El Tipo ya Existe!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                }
            }
            catch (exceptions.blexception)
            {
                MessageBox.Show("Error al Intentar Guardar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al Intentar Guardar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                Gestión_UTN.util.EscribirLog.escribirArchivo(ex.Message);
            }
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.dgvTipos.CurrentCell.Value != null)
                {
                    string nombre = this.dgvTipos.CurrentCell.Value.ToString();

                    DataRow[] drs = tipos.Select("tie_tipo = '" + nombre + "'");

                    if (drs.Length == 0)
                    {
                        bool modificado = createTipoExamen.ModifyTipoExamen(tipo_anterior, nombre);

                        if (modificado)
                        {
                            MessageBox.Show("Tipo Modificado!!", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information);

                            refreshDgv();
                        }
                        else
                        {
                            MessageBox.Show("Error al Modificar!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                    }
                    else
                    {
                        MessageBox.Show("El Tipo ya Existe!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                }
            }
            catch (exceptions.blexception)
            {
                MessageBox.Show("Error al Intentar Modificar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al Intentar Modificar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                Gestión_UTN.util.EscribirLog.escribirArchivo(ex.Message);
            }
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.dgvTipos.CurrentCell.Value != null)
                {
                    string nombre = this.dgvTipos.CurrentCell.Value.ToString();

                    bool eliminado = createTipoExamen.DeleteTipoExamen(nombre);

                    if (eliminado)
                    {
                        MessageBox.Show("Tipo Eliminado!!", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information);

                        refreshDgv();
                    }
                    else
                    {
                        MessageBox.Show("Error al Eliminar!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                }
            }
            catch (exceptions.blexception)
            {
                MessageBox.Show("Error al Intentar Eliminar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al Intentar Eliminar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                Gestión_UTN.util.EscribirLog.escribirArchivo(ex.Message);
            }
        }

        private void dgvTipos_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (this.dgvTipos.CurrentCell.Value != null)
            {
                tipo_anterior = this.dgvTipos.CurrentCell.Value.ToString();
            }
        }

        private void refreshDgv()
        {
            tipos = createTipoExamen.FindAllTipoExamenes();

            if (null != tipos)
            {
                this.dgvTipos.Rows.Clear();

                foreach (DataRow dr in tipos.Rows)
                {
                    this.dgvTipos.Rows.Add(dr["tie_tipo"]);
                }
            }
        }
    }
}
